/*
 * Copyright (c) 2015 DHC Corporation.
 */

package cn.com.dhc.danlu.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.umeng.analytics.MobclickAgent;

import cn.com.dhc.danlu.R;
import cn.com.dhc.danlu.activity.BaseFragment.IFragmentEvent;
import cn.com.dhc.danlu.util.PreferenceUtils;

/**
 * Activity基类
 *
 * @author MuWei
 * @version 1.00 2015/02/03 新建
 */
public abstract class BaseActivity extends Activity implements IFragmentEvent, IActivityEventListener {
    /**
     * 返回按钮
     */
    protected LinearLayout llytBack;
    /**
     * 标题文本框
     */
    protected TextView txtTitle;
    protected Toast toast;
    /**
     * 存储用共同类
     */
    private PreferenceUtils preferenceUtils;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        preferenceUtils = new PreferenceUtils(this);
    }

    @Override
    protected void onStart() {
        super.onStart();

        // 实例化控件 - 不写在onCreate中，否则会因为画面还未加载而初始化失败
        llytBack = (LinearLayout) findViewById(R.id.llytBack);
        txtTitle = (TextView) findViewById(R.id.txtTitle);
        // 初始化
        initBaseActivity();
    }

    @Override
    protected void onResume() {
        super.onResume();
        MobclickAgent.onResume(this);//session的统计
    }

    @Override
    protected void onPause() {
        MobclickAgent.onPause(this);//session的统计
        super.onPause();
    }

    /**
     * 初始化
     */
    private void initBaseActivity() {
        // 设置画面标题
        setActivityTitle();
        // 设置点击监听
        setBaseActivityListener();
    }

    /**
     * 设置画面标题
     */
    private void setActivityTitle() {
        // 画面有标题栏
        if (txtTitle != null) {
            txtTitle.setText(getActivityTitle());
        }
    }

    /**
     * 设置点击监听
     */
    private void setBaseActivityListener() {
        // 画面有返回按钮
        if (llytBack != null) {
            // 设置返回按钮点击监听
            llytBack.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // 返回前画面
                    back();
                }
            });
        }
    }

    @Override
    public void finish() {
        super.finish();
    }

    /**
     * 抽象方法，获取标题
     *
     * @return 画面标题
     */
    protected abstract String getActivityTitle();

    /**
     * 返回前画面，画面有特殊需求复写该方法
     */
    protected void back() {
        // 返回前画面
        finish();
    }

    /**
     * 取得PreferenceUtils对象
     *
     * @return 存储用共同类
     */
    public PreferenceUtils getPreferenceUtils() {
        return preferenceUtils;
    }

    /**
     * 外部启动activity监听
     */
    @Override
    public void onActivityStart() {
    }
}